# 作者：一只牛吗
# 2025 年02月 04日 02时 19分 11秒
# 1278599690@qq.com
import test


def use_try_except():
    while True:
        try:
            x = int(input("请输入一个数字："))
            print("你输入的数字是：", x)
            break
        except:
            print("输入的不是数字，请重新输入！")


def use_try_except_else():
    while True:
        try:
            x = int(input("请输入一个数字："))
            print("你输入的数字是：", x)
            break
        except:
            print("输入的不是数字，请重新输入！")
        else:
            print("输入的数字是有效的！")


def use_try_except_finally():
    while True:
        try:
            x = int(input("请输入一个数字："))
            print("你输入的数字是：", x)
            break
        except:
            print("输入的不是数字，请重新输入！")
        else:  # else 语句在 try 语句块执行成功的情况下才执行
            print("输入的数字是有效的！")
        finally:  # finally 语句无论是否有异常都将执行，且不受return影响
            print("程序执行结束！")


def use_try_except2():
    while True:
        try:
            num = int(input("请输入一个整数："))
            result = 100 / num
            print(len(result))
        except ZeroDivisionError:
            print("不能除以 0！")
        except ValueError:
            print("输入的不是整数！")
        except Exception as e:
            print(f"出现异常：{e}")
        else:
            print(f'{num} 除以 100 得到的商是 {result:.2f}')
            break
        finally:
            print("程序执行结束！")

def use_try_except3():
    try:
        test.test()
    except Exception as e:
        print(f"出现异常：{e}")
        # 输出异常发生的文件（模块）和具体行数
        print(f"异常发生的位置（文件名和行号）：{e.__traceback__.tb_frame.f_code.co_filename}:{e.__traceback__.tb_lineno}")
        print('异常发生的文件：', e.__traceback__.tb_frame.f_code.co_filename)
        print("异常发生的行数：", e.__traceback__.tb_lineno)


if __name__ == '__main__':
    # use_try_except_finally()
    # use_try_except2()
    use_try_except3()